.animation_flex (@value){
    -webkit-animation: @value;
    -moz-animation:    @value;
    -o-animation:      @value;
    -ms-transition:    @value;
    animation:         @value;
}

.animation (@name, @duration: 300ms, @delay: 0, @ease: ease) {
    -webkit-animation:  @name @duration @delay @ease;
    -moz-animation:     @name @duration @delay @ease;
    -o-animation:       @name @duration @delay @ease;
    -ms-animation:      @name @duration @delay @ease;
    animation:          @name @duration @delay @ease;
}

/* ============ flash ============ */
.flash-frames () {
    0% { opacity: 1; }
    20% { opacity: 1; }
    50% { opacity: 0; }
    80% { opacity: 1; }
    100% { opacity: 1; }
}
@-webkit-keyframes flash {.flash-frames;}     /* Safari, Chrome and Opera > 12.1 */
@-moz-keyframes flash {.flash-frames;}        /* Firefox < 16 */
@-o-keyframes flash {.flash-frames;}          /* Opera < 12.1 */
@-ms-keyframes flash {.flash-frames;}         /* Internet Explorer */
@keyframes flash {.flash-frames;}

/* ============ fadein ============ */
.fadein-frames () {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@-webkit-keyframes fadein {.fadein-frames;}     /* Safari, Chrome and Opera > 12.1 */
@-moz-keyframes fadein {.fadein-frames;}        /* Firefox < 16 */
@-o-keyframes fadein {.fadein-frames;}          /* Opera < 12.1 */
@-ms-keyframes fadein {.fadein-frames;}         /* Internet Explorer */
@keyframes fadein {.fadein-frames;}

/* ============ fadeout ============ */
.fadeout-frames () {
    from { opacity: 1; }
    to   { opacity: 0; }
}
@-webkit-keyframes fadeout {.fadeout-frames;}     /* Safari, Chrome and Opera > 12.1 */
@-moz-keyframes fadeout {.fadeout-frames;}        /* Firefox < 16 */
@-o-keyframes fadeout {.fadeout-frames;}          /* Opera < 12.1 */
@-ms-keyframes fadeout {.fadeout-frames;}         /* Internet Explorer */
@keyframes fadeout {.fadeout-frames;}
